<?php
/***********************************************/
/*TITULO CAPITULO*/
/***********************************************/
echo" <div class=\"pag_content\">
 	<div class=\"pag_content_title\">
		<div class=\"pag_title_cap\">Cap&iacute;tulo 1: </div>
		<div class=\"pag_title_cont\">	Componentes y estructura</div>
    </div>
    <div class=\"pag_content_body\">         
	<div class=\"contenido_principal\">	
		<br />";

/***********************************************/
/*TITULO PARTE*/
/***********************************************/
		
echo"	<div class=\"parrafo_titulo\">
		Conceptos b&aacute;sicos
	</div>		";

/***********************************************/
/*CONTENIDO*/
/***********************************************/
echo"


		<div class=\"parrafo\" align=\"justify\">
			<spamp class=\"parrafo_negrita\">Integridad Referencial:</spamp>  Dentro de las tablas de un esquema pueden existir los siguientes tipos de constraints	o restricciones:
		</div>
		<div class=\"parrafo\" align=\"justify\">	
			<ul class=\"parrafo_lista\">
				<li><b>Not Null:</b> &nbsp;&nbsp; Si definimos la columna de una tabla como Not Null cada registro de esa tabla debe de tener asignado un valor. Este no tiene 
				por que ser &uacute;nico.</li>
				<li><b>Unique Key:</b>&nbsp;&nbsp; Cada valor de los registros de esa columna deben de ser &uacute;nicos. Aunque valores nulos estan permitidos.</li>
				<li><b>Primary Key:</b>&nbsp;&nbsp; Cada valor de los registros de esa columna deben de ser &uacute;nicos, sin que sean permitidos los valores nulos.</li>
				<li><b>Foreign Key:</b>&nbsp;&nbsp; Cuando asociamos una Foreign Key a una columna, estamos asociando los registros de esa columna a los registros
				de otra columna en otra tabla. Es decir, para poder insertar un registro en la primera tabla es necesario que este valor ya exista en la segunda.</li>
				<li><b>Check:</b>&nbsp;&nbsp; Cuando necesitamos que los valores que se van a insertar en una columna cumplan cierta condici&oacute;n, por ejemplo, que 
				sean mayores de 0, utilizaremos este tipo de constraint.</li>
			</ul>
		</div>
	
		<div class=\"parrafo\" align=\"justify\">
		&nbsp;&nbsp; No os preocupeis si esto os suena a chino, s&oacute;lo estamos empezando. Para aquellos que vayais un poco mas adelantados podeis saber que constraints tiene
		definida buestra base de datos si consultais la tabla <i>DBA_CONSTRAINTS</i> o <i>DBA_CONS_COLUMNS</i>.
		<br /><br />
		&nbsp;&nbsp;Una vez explicado que es una constraint y los tipos que nos podemos encontrar. Vamos a definir que conocemos por <i>integridad referencial</i>. Integridad
		referencial es la propiedad que tienen las bases de datos por las cuales nos asegura que cada registro de cada columna en la que se haya definido una constraint o 
		restricci&oacute;n cumple con la restricci&oacute;n establecida en esa columna.
		</div>
		<div class=\"parrafo\" align=\"justify\">
			Os pongo un ejemplo de dos constraints definidas en una tabla:<br />
			<center><img src=\"images/oca_cap1_concep1.jpg\" alt=\"Ejemplo Foreign Key\"></center>
		</div>
		<div class=\"parrafo\" align=\"justify\">&nbsp;&nbsp;<b>Explicaci&oacute;n:</b> &nbsp;&nbsp;Este ejemplo muestra lo que podr&iacute;a ser una tabla de una base de datos de una empresa, en esta tabla queremos reflejar todos los empleados
		que pertenecen a esa empresa, para evitar tener empleados duplicados nos vamos a crear un EMPNO que tendr&aacute; que ser &uacute;nico para cada empleado, por lo que y seg&uacute;n hemos visto
		vamos a necesitar definir en esa columna una constraint de tipo PRIMARY KEY. En esta tabla tambi&eacute;n vemos como a cada empleado se le asigna a un determinado departamento
		a cada departamento se le a asignado un DEPTNO unico, para que el DEPTNO que le asignamos a un nuevo empleado sea correcto, tenemos que hacer que ese valor previamente exista
		en la tabla DEPT, por lo que tendremos que crear en la columna DEPTNO de la tabla EMP una Foreign Key que la asocie con la tabla DEPT.
		</div>
		<div class=\"parrafo\" align=\"justify\">--<b>Segmentos, Extensiones y Bloques:</b> Podemos definir un segmento como una entidad que consume espacio f&iacute;sico en una base de datos. Los principales tipos 
		de segmentos que nos vamos a encontrar son:
		</div><br />
	
		<div class=\"parrafo\" align=\"justify\">	
		<ul class=\"parrafo_lista\">
			<li><b>Tabla:</b> Las tablas son tipos de segmentos que estructuran la informaci&oacute;n en columnas y filas.</li>
			<li><b>Indice:</b> Tipo de segmento creado para mejorar el acceso a las tablas</li>
			<li><b>RollBack:</b> Es un tipo de segmento utilizado para asegurar la consistencia en la lectura durante una transaccion.</li>
			<li><b>Partici&oacute;n:</b> Utilizaremos este segmento cuando nos encontremos tablas de gran tama&ntilde;o y para facilitar su acceso las partiremos 
			en partes mas peque&ntilde;as.</li>
		</ul></div>
	
		<div class=\"parrafo\" align=\"justify\">	
		&nbsp;&nbsp;Seg&uacute;n una tabla, un indice, el segmento de RollBack o una partici&oacute;n vayan creciendo el segmento que las forma ira creciendo a&ntilde;adiendo lo que conocemos como extensiones que a su 
		vez se formaran con un n&uacute;mero de bloques (el m&iacute;nimo n&uacute;mero de bloques que forma una extensi&oacute;n es 5). Durante la instalacion de la base de datos el administrador podr&aacute; configurar
		que espacio quiere que ocupen esos bloques, teniendo un valor por defecto de 4kB.
		</div>
		<div class=\"parrafo\" align=\"justify\">	--<b>Tipos de Query:</b> Personalmente entiendo por una query toda aquella instruccion que interaccione con los valores almacenados en una base de datos. Por lo que una transacci&oacute;n
		sera el conjunto de queries que ejecutamos hasta realizar un commit o un rollback. Los tipos de query que nos vamos a encontrar son:
		</div>
		<div class=\"parrafo\" align=\"justify\">	
				<ul class=\"parrafo_lista\">
					<li><b>DML:</b>Data Manipulation Languaje, son todas aquellas queries que van a modificar alg&uacute;n registro de alguna tabla. Asi tenemos INSERT, DELETE y UPDATE.</li>
					<li><b>DDL:</b>Data Definition Languaje, son aquellas queries que van a generar un nuevo objeto en la base de datos. Tenemos CREATE TABLE, CREATE INDEX, CREATE VIEW, etc.</li>
					<li><b>DCL:</b>Data Control Languaje, son todas aquellas queries que controlan el acceso a los objetos de una base de datos. Tenemos COMMIT, ROLLBACK, GRANT, REVOKE</li>
				</ul>		
		</div>";
echo"
	</div> 		 
    </div>
    <div class=\"pag_content_footer\">
    </div>
    <div class=\"pag_content_nav\">		
		<div class=\"pag_contenido_left\">
			<a  class=\"cap_next\" href=oca_main.php?cap=1&part=0>	&lt; Anterior </a>
		 </div>
		<div class=\"pag_contenido_right\" align=\"right\">	
			<a  class=\"cap_next\" href=\"oca_main.php?cap=1&part=2\">	Siguiente &gt;</a>
		 </div>
	</div>      
</div>
";

?>
